import pygame, os, random, datetime
from datetime import *

class Enemy:
	def __init__(self,dx,dy,vidas,velocidade,score,tipo):
		self.dx = dx
		self.dy = dy
		self.rect = pygame.Rect(dx,dy,42,42)
		self.status = 'VIVO'
		self.tempo_inicial = datetime.now()
		self.tempo_morto = datetime.now()
		self.score = score
		self.vidas = vidas
		self.direcao_do_movimento = 'cima'
		self.movimentos_possiveis = ['cima','baixo','esquerda','direita','parado']
		self.velocidade = velocidade
		self.alcance_da_bomba = 1
		self.contador_para_mudar_sprite = 0
		self.inimigo_imagem = pygame.image.load('imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'baixo2.png')
		self.imagem_direita = ['imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'direita1.png',
								'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'direita2.png',
								'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'direita3.png',
								'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'direita4.png']
		self.imagem_esquerda = ['imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'esquerda1.png',
								'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'esquerda2.png',
								'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'esquerda3.png',
								'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'esquerda4.png']
		self.imagem_cima = ['imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'cima1.png',
							'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'cima2.png',
							'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'cima3.png',
							'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'cima4.png']
		self.imagem_baixo = ['imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'baixo1.png',
							'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'baixo2.png',
							'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'baixo3.png',
							'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'baixo4.png']
		self.imagem_morte = ['imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'morte1.png',
							'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'morte2.png',
							'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'morte3.png',
							'imagens' + os.sep + 'sprites' + os.sep + 'enemy' + os.sep + tipo + os.sep + 'morte4.png']
		
	def move(self,mapa_de_movimentacao):
		if self.status == 'VIVO':
			if self.rect.x%42 == 0 and self.rect.y%42 == 0:
				self.movimentos_possiveis = []
				if mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)-1] == 'cam' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)-1] == 'bomba' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)-1] == 'dano' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)-1] == 'score' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)-1] == 'tempo' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)-1] == 'velocidade' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)-1] == 'vida':
					self.movimentos_possiveis.append('esquerda')
				if mapa_de_movimentacao[(self.rect.y/42)+1][self.rect.x/42] == 'cam' or mapa_de_movimentacao[(self.rect.y/42)+1][self.rect.x/42] == 'bomba' or mapa_de_movimentacao[(self.rect.y/42)+1][self.rect.x/42] == 'dano' or mapa_de_movimentacao[(self.rect.y/42)+1][self.rect.x/42] == 'score' or mapa_de_movimentacao[(self.rect.y/42)+1][self.rect.x/42] == 'tempo' or mapa_de_movimentacao[(self.rect.y/42)+1][self.rect.x/42] == 'velocidade' or mapa_de_movimentacao[(self.rect.y/42)+1][self.rect.x/42] == 'vida':
					self.movimentos_possiveis.append('baixo')
				if mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)+1] == 'cam' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)+1] == 'bomba' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)+1] == 'dano' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)+1] == 'score' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)+1] == 'tempo' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)+1] == 'velocidade' or mapa_de_movimentacao[self.rect.y/42][(self.rect.x/42)+1] == 'vida':
					self.movimentos_possiveis.append('direita')
				if mapa_de_movimentacao[(self.rect.y/42)-1][self.rect.x/42] == 'cam' or mapa_de_movimentacao[(self.rect.y/42)-1][self.rect.x/42] == 'bomba' or mapa_de_movimentacao[(self.rect.y/42)-1][self.rect.x/42] == 'dano' or mapa_de_movimentacao[(self.rect.y/42)-1][self.rect.x/42] == 'score' or mapa_de_movimentacao[(self.rect.y/42)-1][self.rect.x/42] == 'tempo' or mapa_de_movimentacao[(self.rect.y/42)-1][self.rect.x/42] == 'velocidade' or mapa_de_movimentacao[(self.rect.y/42)-1][self.rect.x/42] == 'vida':
					self.movimentos_possiveis.append('cima')
				self.movimentos_possiveis.append('parado')	
				self.direcao_do_movimento = self.movimentos_possiveis[random.randint(0,len(self.movimentos_possiveis)-1)]
				if self.direcao_do_movimento == 'esquerda':	
					self.rect.x -= self.velocidade
					self.__muda_sprite('ESQUERDA')
				if self.direcao_do_movimento == 'direita':	
					self.rect.x += self.velocidade
					self.__muda_sprite('DIREITA')
				if self.direcao_do_movimento == 'baixo':	
					self.rect.y += self.velocidade
					self.__muda_sprite('BAIXO')
				if self.direcao_do_movimento == 'cima':	
					self.rect.y -= self.velocidade
					self.__muda_sprite('CIMA')
				if self.direcao_do_movimento == 'parado':
					pass		
			else:
				if self.direcao_do_movimento == 'esquerda':	
					self.rect.x -= self.velocidade
					self.__muda_sprite('ESQUERDA')
				if self.direcao_do_movimento == 'direita':	
					self.rect.x += self.velocidade
					self.__muda_sprite('DIREITA')
				if self.direcao_do_movimento == 'baixo':	
					self.rect.y += self.velocidade
					self.__muda_sprite('BAIXO')
				if self.direcao_do_movimento == 'cima':	
					self.rect.y -= self.velocidade
					self.__muda_sprite('CIMA')
		else:
			pass
	def __muda_sprite(self,direcao):
		if direcao == 'DIREITA':
			if self.contador_para_mudar_sprite < 8-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_direita[0])
			elif self.contador_para_mudar_sprite < 14-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_direita[1])
			elif self.contador_para_mudar_sprite < 20-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_direita[2])
			elif self.contador_para_mudar_sprite < 26-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_direita[3])
			else:
				self.contador_para_mudar_sprite = 0
			self.contador_para_mudar_sprite += 1
		elif direcao == 'ESQUERDA':
			if self.contador_para_mudar_sprite < 8-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_esquerda[0])
			elif self.contador_para_mudar_sprite < 14-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_esquerda[1])
			elif self.contador_para_mudar_sprite < 20-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_esquerda[2])
			elif self.contador_para_mudar_sprite < 26-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_esquerda[3])
			else:
				self.contador_para_mudar_sprite = 0
			self.contador_para_mudar_sprite += 1
		elif direcao == 'CIMA':
			if self.contador_para_mudar_sprite < 8-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_cima[0])
			elif self.contador_para_mudar_sprite < 14-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_cima[1])
			elif self.contador_para_mudar_sprite < 20-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_cima[2])
			elif self.contador_para_mudar_sprite < 26-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_cima[3])
			else:
				self.contador_para_mudar_sprite = 0
			self.contador_para_mudar_sprite += 1
		elif direcao == 'BAIXO':
			if self.contador_para_mudar_sprite < 8-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_baixo[0])
			elif self.contador_para_mudar_sprite < 14-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_baixo[1])
			elif self.contador_para_mudar_sprite < 20-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_baixo[2])
			elif self.contador_para_mudar_sprite < 26-self.velocidade:
				self.inimigo_imagem = pygame.image.load(self.imagem_baixo[3])
			else:
				self.contador_para_mudar_sprite = 0
			self.contador_para_mudar_sprite += 1
